#pragma once
/*
@author zhp
@date 2017/1/6 18:30
@purpose for dm
*/
#include <string>
#include <luabind/luabind.hpp>

#ifdef _DEBUG
#pragma comment(lib, "dmd.lib")
#else
#pragma comment(lib, "dm.lib")
#endif

class DmSoft{
public:
	DmSoft();
	~DmSoft();
	static void RegForLua(lua_State* l);
	std::string Ver();
	long SetPath(const std::string& path);
	std::string Ocr(long x1, long y1, long x2, long y2, const std::string& color, double sim);
	long FindStr(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, long * x, long * y);
	void _FindStr_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	long GetResultCount(const std::string& str);
	long GetResultPos(const std::string& str, long index, long * x, long * y);
	void _GetResultPos_(lua_State* l, const std::string& str, long index);
	long StrStr(const std::string& s, const std::string& str);
	long SendCommand(const std::string& cmd);
	long UseDict(long index);
	std::string GetBasePath();
	long SetDictPwd(const std::string& pwd);
	std::string OcrInFile(long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& color, double sim);
	long Capture(long x1, long y1, long x2, long y2, const std::string& file_name);
	long KeyPress(long vk);
	long KeyDown(long vk);
	long KeyUp(long vk);
	long LeftClick();
	long RightClick();
	long MiddleClick();
	long LeftDoubleClick();
	long LeftDown();
	long LeftUp();
	long RightDown();
	long RightUp();
	long MoveTo(long x, long y);
	long MoveR(long rx, long ry);
	std::string GetColor(long x, long y);
	std::string GetColorBGR(long x, long y);
	std::string RGB2BGR(const std::string& rgb_color);
	std::string BGR2RGB(const std::string& bgr_color);
	long UnBindWindow();
	long CmpColor(long x, long y, const std::string& color, double sim);
	long ClientToScreen(long hwnd, long * x, long * y);
	void _ClientToScreen_(lua_State* l, long hwnd);
	long ScreenToClient(long hwnd, long * x, long * y);
	void _ScreenToClient_(lua_State* l, long hwnd);
	long ShowScrMsg(long x1, long y1, long x2, long y2, const std::string& msg, const std::string& color);
	long SetMinRowGap(long row_gap);
	long SetMinColGap(long col_gap);
	long FindColor(long x1, long y1, long x2, long y2, const std::string& color, double sim, long dir, long * x, long * y);
	void _FindColor_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& color, double sim, long dir);
	std::string FindColorEx(long x1, long y1, long x2, long y2, const std::string& color, double sim, long dir);
	long SetWordLineHeight(long line_height);
	long SetWordGap(long word_gap);
	long SetRowGapNoDict(long row_gap);
	long SetColGapNoDict(long col_gap);
	long SetWordLineHeightNoDict(long line_height);
	long SetWordGapNoDict(long word_gap);
	long GetWordResultCount(const std::string& str);
	long GetWordResultPos(const std::string& str, long index, long * x, long * y);
	void _GetWordResultPos_(lua_State* l, const std::string& str, long index);
	std::string GetWordResultStr(const std::string& str, long index);
	std::string GetWords(long x1, long y1, long x2, long y2, const std::string& color, double sim);
	std::string GetWordsNoDict(long x1, long y1, long x2, long y2, const std::string& color);
	long SetShowErrorMsg(long show);
	long GetClientSize(long hwnd, long * width, long * height);
	void _GetClientSize_(lua_State* l, long hwnd);
	long MoveWindow(long hwnd, long x, long y);
	std::string GetColorHSV(long x, long y);
	std::string GetAveRGB(long x1, long y1, long x2, long y2);
	std::string GetAveHSV(long x1, long y1, long x2, long y2);
	long GetForegroundWindow();
	long GetForegroundFocus();
	long GetMousePointWindow();
	long GetPointWindow(long x, long y);
	std::string EnumWindow(long parent, const std::string& title, const std::string& class_name, long filter);
	long GetWindowState(long hwnd, long flag);
	long GetWindow(long hwnd, long flag);
	long GetSpecialWindow(long flag);
	long SetWindowText(long hwnd, const std::string& text);
	long SetWindowSize(long hwnd, long width, long height);
	long GetWindowRect(long hwnd, long * x1, long * y1, long * x2, long * y2);
	void _GetWindowRect_(lua_State* l, long hwnd);
	std::string GetWindowTitle(long hwnd);
	std::string GetWindowClass(long hwnd);
	long SetWindowState(long hwnd, long flag);
	long CreateFoobarRect(long hwnd, long x, long y, long w, long h);
	long CreateFoobarRoundRect(long hwnd, long x, long y, long w, long h, long rw, long rh);
	long CreateFoobarEllipse(long hwnd, long x, long y, long w, long h);
	long CreateFoobarCustom(long hwnd, long x, long y, const std::string& pic, const std::string& trans_color, double sim);
	long FoobarFillRect(long hwnd, long x1, long y1, long x2, long y2, const std::string& color);
	long FoobarDrawText(long hwnd, long x, long y, long w, long h, const std::string& text, const std::string& color, long align);
	long FoobarDrawPic(long hwnd, long x, long y, const std::string& pic, const std::string& trans_color);
	long FoobarUpdate(long hwnd);
	long FoobarLock(long hwnd);
	long FoobarUnlock(long hwnd);
	long FoobarSetFont(long hwnd, const std::string& font_name, long size, long flag);
	long FoobarTextRect(long hwnd, long x, long y, long w, long h);
	long FoobarPrintText(long hwnd, const std::string& text, const std::string& color);
	long FoobarClearText(long hwnd);
	long FoobarTextLineGap(long hwnd, long gap);
	long Play(const std::string& file_name);
	long FaqCapture(long x1, long y1, long x2, long y2, long quality, long delay, long time);
	long FaqRelease(long handle);
	std::string FaqSend(const std::string& server, long handle, long request_type, long time_out);
	long Beep(long fre, long delay);
	long FoobarClose(long hwnd);
	long MoveDD(long dx, long dy);
	long FaqGetSize(long handle);
	long LoadPic(const std::string& pic_name);
	long FreePic(const std::string& pic_name);
	long GetScreenData(long x1, long y1, long x2, long y2);
	long FreeScreenData(long handle);
	long WheelUp();
	long WheelDown();
	long SetMouseDelay(const std::string& tpe, long delay);
	long SetKeypadDelay(const std::string& tpe, long delay);
	std::string GetEnv(long index, const std::string& name);
	long SetEnv(long index, const std::string& name, const std::string& value);
	long SendString(long hwnd, const std::string& str);
	long DelEnv(long index, const std::string& name);
	std::string GetPath();
	long SetDict(long index, const std::string& dict_name);
	long FindPic(long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& delta_color, double sim, long dir, long * x, long * y);
	void _FindPic_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& delta_color, double sim, long dir);
	std::string FindPicEx(long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& delta_color, double sim, long dir);
	long SetClientSize(long hwnd, long width, long height);
	long ReadInt(long hwnd, const std::string& addr, long tpe);
	float ReadFloat(long hwnd, const std::string& addr);
	double ReadDouble(long hwnd, const std::string& addr);
	std::string FindInt(long hwnd, const std::string& addr_range, long int_value_min, long int_value_max, long tpe);
	std::string FindFloat(long hwnd, const std::string& addr_range, float float_value_min, float float_value_max);
	std::string FindDouble(long hwnd, const std::string& addr_range, double double_value_min, double double_value_max);
	std::string FindString(long hwnd, const std::string& addr_range, const std::string& string_value, long tpe);
	long GetModuleBaseAddr(long hwnd, const std::string& module_name);
	std::string MoveToEx(long x, long y, long w, long h);
	std::string MatchPicName(const std::string& pic_name);
	long AddDict(long index, const std::string& dict_info);
	long EnterCri();
	long LeaveCri();
	long WriteInt(long hwnd, const std::string& addr, long tpe, long v);
	long WriteFloat(long hwnd, const std::string& addr, float v);
	long WriteDouble(long hwnd, const std::string& addr, double v);
	long WriteString(long hwnd, const std::string& addr, long tpe, const std::string& v);
	long AsmAdd(const std::string& asm_ins);
	long AsmClear();
	long AsmCall(long hwnd, long mode);
	long FindMultiColor(long x1, long y1, long x2, long y2, const std::string& first_color, const std::string& offset_color, double sim, long dir, long * x, long * y);
	void _FindMultiColor_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& first_color, const std::string& offset_color, double sim, long dir);
	std::string FindMultiColorEx(long x1, long y1, long x2, long y2, const std::string& first_color, const std::string& offset_color, double sim, long dir);
	std::string AsmCode(long base_addr);
	std::string Assemble(const std::string& asm_code, long base_addr, long is_upper);
	long SetWindowTransparent(long hwnd, long v);
	std::string ReadData(long hwnd, const std::string& addr, long length);
	long WriteData(long hwnd, const std::string& addr, const std::string& data);
	std::string FindData(long hwnd, const std::string& addr_range, const std::string& data);
	long SetPicPwd(const std::string& pwd);
	long Log(const std::string& info);
	std::string FindStrE(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	std::string FindColorE(long x1, long y1, long x2, long y2, const std::string& color, double sim, long dir);
	std::string FindPicE(long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& delta_color, double sim, long dir);
	std::string FindMultiColorE(long x1, long y1, long x2, long y2, const std::string& first_color, const std::string& offset_color, double sim, long dir);
	long SetExactOcr(long exact_ocr);
	std::string ReadString(long hwnd, const std::string& addr, long tpe, long length);
	long FoobarTextPrintDir(long hwnd, long dir);
	std::string OcrEx(long x1, long y1, long x2, long y2, const std::string& color, double sim);
	long SetDisplayInput(const std::string& mode);
	long GetTime();
	long GetScreenWidth();
	long GetScreenHeight();
	long BindWindowEx(long hwnd, const std::string& display, const std::string& mouse, const std::string& keypad, const std::string& public_desc, long mode);
	std::string GetDiskSerial();
	std::string Md5(const std::string& str);
	std::string GetMac();
	long ActiveInputMethod(long hwnd, const std::string& id);
	long CheckInputMethod(long hwnd, const std::string& id);
	long FindInputMethod(const std::string& id);
	long GetCursorPos(long * x, long * y);
	void _GetCursorPos_(lua_State* l);
	long BindWindow(long hwnd, const std::string& display, const std::string& mouse, const std::string& keypad, long mode);
	long FindWindow(const std::string& class_name, const std::string& title_name);
	long GetScreenDepth();
	long SetScreen(long width, long height, long depth);
	long ExitOs(long tpe);
	std::string GetDir(long tpe);
	long GetOsType();
	long FindWindowEx(long parent, const std::string& class_name, const std::string& title_name);
	long SetExportDict(long index, const std::string& dict_name);
	std::string GetCursorShape();
	long DownCpu(long rate);
	std::string GetCursorSpot();
	long SendString2(long hwnd, const std::string& str);
	long FaqPost(const std::string& server, long handle, long request_type, long time_out);
	std::string FaqFetch();
	std::string FetchWord(long x1, long y1, long x2, long y2, const std::string& color, const std::string& word);
	long CaptureJpg(long x1, long y1, long x2, long y2, const std::string& file_name, long quality);
	long FindStrWithFont(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, const std::string& font_name, long font_size, long flag, long * x, long * y);
	void _FindStrWithFont_(const luabind::object& x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, const std::string& font_name, long font_size, long flag);
	std::string FindStrWithFontE(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, const std::string& font_name, long font_size, long flag);
	std::string FindStrWithFontEx(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, const std::string& font_name, long font_size, long flag);
	std::string GetDictInfo(const std::string& str, const std::string& font_name, long font_size, long flag);
	long SaveDict(long index, const std::string& file_name);
	long GetWindowProcessId(long hwnd);
	std::string GetWindowProcessPath(long hwnd);
	long LockInput(long locks);
	std::string GetPicSize(const std::string& pic_name);
	long GetID();
	long CapturePng(long x1, long y1, long x2, long y2, const std::string& file_name);
	long CaptureGif(long x1, long y1, long x2, long y2, const std::string& file_name, long delay, long time);
	long ImageToBmp(const std::string& pic_name, const std::string& bmp_name);
	long FindStrFast(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, long * x, long * y);
	void _FindStrFast_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	std::string FindStrFastEx(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	std::string FindStrFastE(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	long EnableDisplayDebug(long enable_debug);
	long CapturePre(const std::string& file_name);
	long RegEx(const std::string& code, const std::string& Ver, const std::string& ip);
	std::string GetMachineCode();
	long SetClipboard(const std::string& data);
	std::string GetClipboard();
	long GetNowDict();
	long Is64Bit();
	long GetColorNum(long x1, long y1, long x2, long y2, const std::string& color, double sim);
	std::string EnumWindowByProcess(const std::string& process_name, const std::string& title, const std::string& class_name, long filter);
	long GetDictCount(long index);
	long GetLastError();
	std::string GetNetTime();
	long EnableGetColorByCapture(long en);
	long CheckUAC();
	long SetUAC(long uac);
	long DisableFontSmooth();
	long CheckFontSmooth();
	long SetDisplayAcceler(long level);
	long FindWindowByProcess(const std::string& process_name, const std::string& class_name, const std::string& title_name);
	long FindWindowByProcessId(long process_id, const std::string& class_name, const std::string& title_name);
	std::string ReadIni(const std::string& section, const std::string& key, const std::string& file_name);
	long WriteIni(const std::string& section, const std::string& key, const std::string& v, const std::string& file_name);
	long RunApp(const std::string& path, long mode);
	long delay(long mis);
	long FindWindowSuper(const std::string& spec1, long flag1, long type1, const std::string& spec2, long flag2, long type2);
	std::string ExcludePos(const std::string& all_pos, long tpe, long x1, long y1, long x2, long y2);
	std::string FindNearestPos(const std::string& all_pos, long tpe, long x, long y);
	std::string SortPosDistance(const std::string& all_pos, long tpe, long x, long y);
	long FindPicMem(long x1, long y1, long x2, long y2, const std::string& pic_info, const std::string& delta_color, double sim, long dir, long * x, long * y);
	void _FindPicMem_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& pic_info, const std::string& delta_color, double sim, long dir);
	std::string FindPicMemEx(long x1, long y1, long x2, long y2, const std::string& pic_info, const std::string& delta_color, double sim, long dir);
	std::string FindPicMemE(long x1, long y1, long x2, long y2, const std::string& pic_info, const std::string& delta_color, double sim, long dir);
	std::string AppendPicAddr(const std::string& pic_info, long addr, long size);
	long WriteFile(const std::string& file_name, const std::string& content);
	long Stop(long id);
	long SetDictMem(long index, long addr, long size);
	std::string GetNetTimeSafe();
	long ForceUnBindWindow(long hwnd);
	std::string ReadIniPwd(const std::string& section, const std::string& key, const std::string& file_name, const std::string& pwd);
	long WriteIniPwd(const std::string& section, const std::string& key, const std::string& v, const std::string& file_name, const std::string& pwd);
	long DecodeFile(const std::string& file_name, const std::string& pwd);
	long KeyDownChar(const std::string& key_str);
	long KeyUpChar(const std::string& key_str);
	long KeyPressChar(const std::string& key_str);
	long KeyPressStr(const std::string& key_str, long delay);
	long EnableKeypadPatch(long en);
	long EnableKeypadSync(long en, long time_out);
	long EnableMouseSync(long en, long time_out);
	long DmGuard(long en, const std::string& tpe);
	long FaqCaptureFromFile(long x1, long y1, long x2, long y2, const std::string& file_name, long quality);
	std::string FindIntEx(long hwnd, const std::string& addr_range, long int_value_min, long int_value_max, long tpe, long steps, long multi_thread, long mode);
	std::string FindFloatEx(long hwnd, const std::string& addr_range, float float_value_min, float float_value_max, long steps, long multi_thread, long mode);
	std::string FindDoubleEx(long hwnd, const std::string& addr_range, double double_value_min, double double_value_max, long steps, long multi_thread, long mode);
	std::string FindStringEx(long hwnd, const std::string& addr_range, const std::string& string_value, long tpe, long steps, long multi_thread, long mode);
	std::string FindDataEx(long hwnd, const std::string& addr_range, const std::string& data, long steps, long multi_thread, long mode);
	long EnableRealMouse(long en, long mousedelay, long mousestep);
	long EnableRealKeypad(long en);
	long SendStringIme(const std::string& str);
	long FoobarDrawLine(long hwnd, long x1, long y1, long x2, long y2, const std::string& color, long style, long width);
	std::string FindStrEx(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	long IsBind(long hwnd);
	long SetDisplayDelay(long t);
	long GetDmCount();
	long DisableScreenSave();
	long DisablePowerSave();
	long SetMemoryHwndAsProcessId(long en);
	long FindShape(long x1, long y1, long x2, long y2, const std::string& offset_color, double sim, long dir, long * x, long * y);
	void _FindShape_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& offset_color, double sim, long dir);
	std::string FindShapeE(long x1, long y1, long x2, long y2, const std::string& offset_color, double sim, long dir);
	std::string FindShapeEx(long x1, long y1, long x2, long y2, const std::string& offset_color, double sim, long dir);
	std::string FindStrS(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, long * x, long * y);
	void _FindStrS_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	std::string FindStrExS(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	std::string FindStrFastS(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim, long * x, long * y);
	void _FindStrFastS_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	std::string FindStrFastExS(long x1, long y1, long x2, long y2, const std::string& str, const std::string& color, double sim);
	std::string FindPicS(long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& delta_color, double sim, long dir, long * x, long * y);
	void _FindPicS_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& delta_color, double sim, long dir);
	std::string FindPicExS(long x1, long y1, long x2, long y2, const std::string& pic_name, const std::string& delta_color, double sim, long dir);
	long ClearDict(long index);
	std::string GetMachineCodeNoMac();
	long GetClientRect(long hwnd, long * x1, long * y1, long * x2, long * y2);
	void _GetClientRect_(lua_State* l, long hwnd);
	long EnableFakeActive(long en);
	long GetScreenDataBmp(long x1, long y1, long x2, long y2, long * data, long * size);
	void _GetScreenDataBmp_(lua_State* l, long x1, long y1, long x2, long y2);
	long EncodeFile(const std::string& file_name, const std::string& pwd);
	std::string GetCursorShapeEx(long tpe);
	long FaqCancel();
	std::string IntToData(long int_value, long tpe);
	std::string FloatToData(float float_value);
	std::string DoubleToData(double double_value);
	std::string StringToData(const std::string& string_value, long tpe);
	long SetMemoryFindResultToFile(const std::string& file_name);
	long EnableBind(long en);
	long SetSimMode(long mode);
	long LockMouseRect(long x1, long y1, long x2, long y2);
	long SendPaste(long hwnd);
	long IsDisplayDead(long x1, long y1, long x2, long y2, long t);
	long GetKeyState(long vk);
	long CopyFile(const std::string& src_file, const std::string& dst_file, long over);
	long IsFileExist(const std::string& file_name);
	long DeleteFile(const std::string& file_name);
	long MoveFile(const std::string& src_file, const std::string& dst_file);
	long CreateFolder(const std::string& folder_name);
	long DeleteFolder(const std::string& folder_name);
	long GetFileLength(const std::string& file_name);
	std::string ReadFile(const std::string& file_name);
	long WaitKey(long key_code, long time_out);
	long DeleteIni(const std::string& section, const std::string& key, const std::string& file_name);
	long DeleteIniPwd(const std::string& section, const std::string& key, const std::string& file_name, const std::string& pwd);
	long EnableSpeedDx(long en);
	long EnableIme(long en);
	long Reg(const std::string& code, const std::string& Ver);
	std::string SelectFile();
	std::string SelectDirectory();
	long LockDisplay(long locks);
	long FoobarSetSave(long hwnd, const std::string& file_name, long en, const std::string& header);
	std::string EnumWindowSuper(const std::string& spec1, long flag1, long type1, const std::string& spec2, long flag2, long type2, long sort);
	long DownloadFile(const std::string& url, const std::string& save_file, long timeout);
	long EnableKeypadMsg(long en);
	long EnableMouseMsg(long en);
	long RegNoMac(const std::string& code, const std::string& Ver);
	long RegExNoMac(const std::string& code, const std::string& Ver, const std::string& ip);
	long SetEnumWindowDelay(long delay);
	long FindMulColor(long x1, long y1, long x2, long y2, const std::string& color, double sim);
	std::string GetDict(long index, long font_index);
	long GetBindWindow();
	long FoobarStartGif(long hwnd, long x, long y, const std::string& pic_name, long repeat_limit, long delay);
	long FoobarStopGif(long hwnd, long x, long y, const std::string& pic_name);
	long FreeProcessMemory(long hwnd);
	std::string ReadFileData(const std::string& file_name, long start_pos, long end_pos);
	long VirtualAllocEx(long hwnd, long addr, long size, long tpe);
	long VirtualFreeEx(long hwnd, long addr);
	std::string GetCommandLine(long hwnd);
	long TerminateProcess(long pid);
	std::string GetNetTimeByIp(const std::string& ip);
	std::string EnumProcess(const std::string& name);
	std::string GetProcessInfo(long pid);
	long ReadIntAddr(long hwnd, long addr, long tpe);
	std::string ReadDataAddr(long hwnd, long addr, long length);
	double ReadDoubleAddr(long hwnd, long addr);
	float ReadFloatAddr(long hwnd, long addr);
	std::string ReadStringAddr(long hwnd, long addr, long tpe, long length);
	long WriteDataAddr(long hwnd, long addr, const std::string& data);
	long WriteDoubleAddr(long hwnd, long addr, double v);
	long WriteFloatAddr(long hwnd, long addr, float v);
	long WriteIntAddr(long hwnd, long addr, long tpe, long v);
	long WriteStringAddr(long hwnd, long addr, long tpe, const std::string& v);
	long Delays(long min_s, long max_s);
	long FindColorBlock(long x1, long y1, long x2, long y2, const std::string& color, double sim, long count, long width, long height, long * x, long * y);
	void _FindColorBlock_(lua_State* l, long x1, long y1, long x2, long y2, const std::string& color, double sim, long count, long width, long height);
	std::string FindColorBlockEx(long x1, long y1, long x2, long y2, const std::string& color, double sim, long count, long width, long height);
	long OpenProcess(long pid);
	std::string EnumIniSection(const std::string& file_name);
	std::string EnumIniSectionPwd(const std::string& file_name, const std::string& pwd);
	std::string EnumIniKey(const std::string& section, const std::string& file_name);
	std::string EnumIniKeyPwd(const std::string& section, const std::string& file_name, const std::string& pwd);
	long SwitchBindWindow(long hwnd);
	long InitCri();
	long SendStringIme2(long hwnd, const std::string& str, long mode);
	std::string EnumWindowByProcessId(long pid, const std::string& title, const std::string& class_name, long filter);
	std::string GetDisplayInfo();
	long EnableFontSmooth();
	std::string OcrExOne(long x1, long y1, long x2, long y2, const std::string& color, double sim);
	long SetAero(long en);
	long FoobarSetTrans(long hwnd, long trans, const std::string& color, double sim);
	long EnablePicCache(long en);
	std::string GetInfo(const std::string& cmd, const std::string& param);
	long FaqIsPosted();
	long LoadPicByte(long addr, long size, const std::string& name);
	long MiddleDown();
	long MiddleUp();
	long FaqCaptureString(const std::string& str);
	long VirtualProtectEx(long hwnd, long addr, long size, long tpe, long old_protect);
	long SetMouseSpeed(long speed);
	long GetMouseSpeed();
	long EnableMouseAccuracy(long en);

private:
	void*	impl_;
};